package com.hu.boot.controller;

import com.hu.boot.config.OrdersConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.Map;

@RestController
public class InjectionController {

    // 基本类型 + String 类型 + 日期类型
    @Value("${name}")
    private String name;
    @Value("${age}")
    private Integer age;
    @Value("${price}")
    private Double price;
    @Value("${birthday}")
    private Date birthday;
    @Value("${sex}")
    private Boolean sex;
    // 注入数组
    @Value("${array}")
    private String[] array;
    // 注入 list 集合
    @Value("${list}")
    private List<String> list;
    // 注入 map 集合,配置文件中要使用 JSON 格式,在注入时必须使用 "#{${xxx}}" 进行获取
    @Value("#{${map}}")
    private Map<String,String> map;

    // 对象属性注入
    private OrdersConfig ordersConfig;

    @Autowired
    public InjectionController(OrdersConfig ordersConfig) {
        this.ordersConfig = ordersConfig;
    }

    @RequestMapping("/inject")
    public String inject(){
        System.out.println(this.name);
        System.out.println(this.age);
        System.out.println(this.price);
        System.out.println(this.birthday);
        System.out.println(this.sex);
        System.out.println(Arrays.toString(this.array));
        System.out.println(this.list);
        System.out.println(this.map);
        System.out.println(this.ordersConfig);
        return "注入成功";
    }
}
